#ifndef MYOBJECTASAUTOPTR_H
#define MYOBJECTASAUTOPTR_H

///////////////////////////////////////////////////////////////////////////////
//
// MyObjectAsAutoPtr.h
//
///////////////////////////////////////////////////////////////////////////////
//
// Author:            Jan Maes
// Created:           Sunday, June 15, 2008
// Responsibilities:  Objects of class MyObjectAsAutoPtr can only be
//                    created using the HandleFactory::HandleFactory::Create
//                    member functions. As a result we get a
//                    std::auto_ptr<MyObjectAsAutoPtr> object as output.
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
// Includes
///////////////////////////////////////////////////////////////////////////////

#include <HandleFactory/HandleFactory.h>

#include <memory>

///////////////////////////////////////////////////////////////////////////////
// MyObjectAsAutoPtr
///////////////////////////////////////////////////////////////////////////////

class MyObjectAsAutoPtr : public HandleFactory::HandleFactory<MyObjectAsAutoPtr, std::auto_ptr<MyObjectAsAutoPtr>, true>
  {
  private:
    friend class HandleFactory::HandleFactory<MyObjectAsAutoPtr, std::auto_ptr<MyObjectAsAutoPtr>, true>;

    MyObjectAsAutoPtr() : m_double(0.0) 
      {
      }

    explicit MyObjectAsAutoPtr(double i_double)
      {
      m_double = i_double;
      }    

  public:
  
    ~MyObjectAsAutoPtr()
      {
      }

    double GetDouble() const 
      {
      return m_double;
      }

  private:

    double m_double;

  };

#endif